FSx for NetApp ONTAP で iSCSI 接続している際、スナップショットの過剰取得等でボリュームの空き領域が無くなるとディスクがオフラインになることがある
コーヒーが好きな emi です。
FSx for NetApp ONTAP(以降、FSxN と省略)で iSCSI 接続している際、スナップショットの過剰取得等でボリュームの空き領域が無くなるとディスクがオフラインになることがあります。
本記事では事象の詳細と対策を記載します。
先にまとめ
- データ更新が多いワークロードで FSxN ボリュームのスナップショットを高頻度で取得したり、自動バックアップを有効にしたりすると、大量のスナップショットが蓄積される
- その結果、ボリュームの空き領域が枯渇し、ボリュームがフル(満タン)になることがある
- ボリュームの空き領域が無くなると iSCSI マウントしたディスクがオフラインになる
- 一時対応としてはスナップショットと自動バックアップを停止しスナップショットとバックアップ削除を実施のうえ、ボリュームをオンラインにすることで復旧する
- 恒久対応としては以下ストレージ運用を検討
- データ移行などデータ更新が多く発生するタイミングではスナップショットの取得と自動バックアップを止めておく
- データ更新が多いワークロードでは自動バックアップとスナップショットの取得頻度や保持期間を見直す
- ボリュームのサイジングを見直す
- スナップショットの自動削除設定をおこなう
- スナップショットデータを CloudWatch メトリクス監視しアラートを発報させる
- ボリュームの自動拡張設定をおこなう
通常時
以下のような構成で検証しました。
5GiB の FSxN ボリュームを作成し、EC2(Windows Server 2022)に iSCSI マウントしています。FSxN ボリュームは Windows Server 上で約 4GiB の E ドライブに見えています。
FSxN コンソール画面
FSxN ボリュームの詳細画面より「モニタリング」タブを開くと、ボリュームのメトリクスがグラフで確認できます。
LUN で切って iSCSI マウントしている部分はユーザーデータとして 80.32%(≒ 4GiB ≒ 4,311,957,504 Byte)に見えています。
Snapshot Reserve はスナップショットデータとして 1%(0.05GiB ≒ 52.1MiB ≒ 53,686,272 Byte)に見えています。
今回スナップショットが Snapshot Reserve 領域をあふれる(spill)様子を分かりやすくするために、以下ブログの要領で Snapshot Reserve を 1% に変更しています。
ボリュームの空き容量は使用可能なボリューム容量として 18.68%(≒ 0.94GiB ≒ 956MiB ≒ 1,002,758,144 Byte)に見えています。
ONTAP CLI で FSxN の中身を確認する
volume show-space コマンドで、ボリューム容量の内訳を確認します。
volume show-space で確認したボリュームの内訳(クリックで展開)
FsxId007d9e5b2e0fb32a8::> volume show-space -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1 Vserver: emiki-fsxn-svm Volume Name: emiki_fsxn_vol1 Volume MSID: 2163401251 Volume DSID: 1026 Vserver UUID: 4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb Aggregate Name: aggr1 Aggregate UUID: 8c27b0a0-e6b2-11ee-9ce5-bf560ed4c9fb Hostname: FsxId007d9e5b2e0fb32a8-01 User Data: 4.02GB User Data Percent: 80% Deduplication: 4KB Deduplication Percent: 0% Temporary Deduplication: - Temporary Deduplication Percent: - Filesystem Metadata: 236KB Filesystem Metadata Percent: 0% SnapMirror Metadata: - SnapMirror Metadata Percent: - Tape Backup Metadata: - Tape Backup Metadata Percent: - Quota Metadata: - Quota Metadata Percent: - Inodes: 20KB Inodes Percent: 0% Inodes Upgrade: - Inodes Upgrade Percent: - Snapshot Reserve: 51.20MB Snapshot Reserve Percent: 1% Snapshot Reserve Unusable: - Snapshot Reserve Unusable Percent: - Snapshot Spill: - Snapshot Spill Percent: - Performance Metadata: 40KB Performance Metadata Percent: 0% Total Used: 4.07GB Total Used Percent: 81% Total Physical Used Size: 16.71MB Physical Used Percentage: 0% Logical Used Size: 4.07GB Logical Used Percent: 81% Logical Available: - FsxId007d9e5b2e0fb32a8::>
User Data: 4.02GB
、User Data Percent: 80%
- ユーザーデータ 80%(LUN として確保した 80%)
Snapshot Reserve: 51.20MB
、Snapshot Reserve Percent: 1%
- Snapshot Reserve が 1% に設定されている
Total Used: 4.07GB
、Total Used Percent: 81%
- 合計使用量が 81%
- LUN として確保した 80% + Snapshot Reserve 1%
Total Physical Used Size: 16.71MB
、Physical Used Percentage: 0%
- 合計物理使用サイズが 0% 未満(≒ 16.71MB)
- 実際に格納されているデータがごくわずか
Logical Used Size: 4.07GB
、Logical Used Percent: 81%
- 論理的使用サイズが 81%
- LUN として確保した 81% + Snapshot Reserve 1%
スナップショットが過剰取得されボリュームがフル(満タン)になると…
以下ブログの要領で、データ変更が激しいワークロードを再現します。
しばらくすると、マウントしていたディスク E が見えなくなってしまいました。
[コンピューターの管理] - [ディスクの管理] を確認すると、対象のディスクがオフラインになっています。
Windows Server のシステムログは以下のようなエラーが表示されます。
レベル | ソース | イベント ID | 内容 |
---|---|---|---|
警告 | disk | 51 | ページング操作中にデバイス \Device\Harddisk2\DR2 上でエラーが検出されました。 |
エラー | disk | 150 | ディスク 2 は、論理ブロック プロビジョニングの永続的なリソース枯渇状態に達しました。 |
警告 | disk | 147 | ディスク 2 は、容量使用率のしきい値に達し、16777216 バイト使用しました。しきい値を超えた時点で、プールの残りの容量は 0 バイトでした。 |
FSxN コンソール画面
ユーザーデータ領域は 80.32% とほぼ変化はありませんが、スナップショットデータ領域は 19.67%(≒ 0.98GiB ≒ 1007MiB ≒ 1,056,071,680 Byte)と大幅に増加しています。空き容量はゼロです。
ONTAP CLI で FSxN の中身を確認する
volume show-space コマンドで、ボリューム容量の内訳を確認します。
volume show-space で確認したボリュームの内訳(クリックで展開)
FsxId007d9e5b2e0fb32a8::> volume show-space -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1 Vserver: emiki-fsxn-svm Volume Name: emiki_fsxn_vol1 Volume MSID: 2163401251 Volume DSID: 1026 Vserver UUID: 4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb Aggregate Name: aggr1 Aggregate UUID: 8c27b0a0-e6b2-11ee-9ce5-bf560ed4c9fb Hostname: FsxId007d9e5b2e0fb32a8-01 User Data: 4.02GB User Data Percent: 80% Deduplication: 4KB Deduplication Percent: 0% Temporary Deduplication: - Temporary Deduplication Percent: - Filesystem Metadata: 760KB Filesystem Metadata Percent: 0% SnapMirror Metadata: - SnapMirror Metadata Percent: - Tape Backup Metadata: - Tape Backup Metadata Percent: - Quota Metadata: - Quota Metadata Percent: - Inodes: 20KB Inodes Percent: 0% Inodes Upgrade: - Inodes Upgrade Percent: - Snapshot Reserve: 51.20MB Snapshot Reserve Percent: 1% Snapshot Reserve Unusable: - Snapshot Reserve Unusable Percent: - Snapshot Spill: 955.9MB Snapshot Spill Percent: 19% Performance Metadata: - Performance Metadata Percent: - Total Used: 5GB Total Used Percent: 100% Total Physical Used Size: 1GB Physical Used Percentage: 20% Logical Used Size: 5GB Logical Used Percent: 100% Logical Available: - FsxId007d9e5b2e0fb32a8::>
Snapshot Spill: 955.9MB
、Snapshot Spill Percent: 19%
- スナップショットが Snapshot Reserve をあふれ出している(spill)
- あふれたスナップショットは 19%
Total Used: 5GB
、Total Used Percent: 100%
- 合計使用量が 100%
- LUN として確保した 80% + Snapshot Spill Percent
Total Physical Used Size: 1GB
、Physical Used Percentage: 20%
- 合計物理使用サイズが 20%(≒ 1GB)
- 実際に格納されているデータはユーザーデータがごくわずかと、スナップショットの約 1GiB
Logical Used Size: 5GB
、Logical Used Percent: 100%
- 論理的使用サイズが 100%
- LUN として確保した 80% + Snapshot Spill Percent
volume snapshot autodelete show コマンドで、スナップショットの一覧を表示します。
volume snapshot show で確認したスナップショット一覧(クリックで展開)
FsxId007d9e5b2e0fb32a8::> volume snapshot show -volume emiki_fsxn_vol1 ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- emiki-fsxn-svm emiki_fsxn_vol1 emiki_5min.2024-03-20_1240 7.90MB 0% 32% emiki_5min.2024-03-20_1245 8.85MB 0% 34% emiki_5min.2024-03-20_1250 9.21MB 0% 35% emiki_5min.2024-03-20_1255 9.45MB 0% 36% emiki_5min.2024-03-20_1300 9.49MB 0% 36% : (中略) : emiki_5min.2024-03-20_1745 14.71MB 0% 46% emiki_5min.2024-03-20_1750 12.27MB 0% 42% emiki_5min.2024-03-20_1755 12.34MB 0% 42% emiki_5min.2024-03-20_1800 17.55MB 0% 51% emiki_5min.2024-03-20_1805 11.52MB 0% 40% emiki_5min.2024-03-20_1810 18.23MB 0% 52% emiki_5min.2024-03-20_1815 13.72MB 0% 45% emiki_5min.2024-03-20_1820 16.32MB 0% 49% emiki_5min.2024-03-20_1825 10.39MB 0% 38% emiki_5min.2024-03-20_1830 17.99MB 0% 51% emiki_5min.2024-03-20_1835 13.76MB 0% 45% emiki_5min.2024-03-20_1840 15.19MB 0% 47% emiki_5min.2024-03-20_1845 16.47MB 0% 49% emiki_5min.2024-03-20_1850 11.95MB 0% 41% emiki_5min.2024-03-20_1855 16.98MB 0% 50% emiki_5min.2024-03-20_1900 17.05MB 0% 50% emiki_5min.2024-03-20_1905 17.72MB 0% 51% emiki_5min.2024-03-20_1910 10.49MB 0% 38% emiki_5min.2024-03-20_1915 11.14MB 0% 39% emiki_5min.2024-03-20_1920 11.22MB 0% 40% emiki_5min.2024-03-20_1925 4.88MB 0% 22% emiki_5min.2024-03-20_1930 140KB 0% 1% emiki_5min.2024-03-20_1935 140KB 0% 1% emiki_5min.2024-03-20_1940 580KB 0% 3% emiki_5min.2024-03-20_1945 144KB 0% 1% 86 entries were displayed. FsxId007d9e5b2e0fb32a8::>
2024/03/20(水) 12:40 UTC(2024/03/20(水) 21:40 JST)に取得し始めたスナップショットが、2024/03/20(水) 19:45 UTC(2024/03/21(木) 04:45 JST)で止まっています。
実はこのログを確認したのが日本時間 2024/03/21(木) 09:57 なので、5 時間ほど前にスナップショットの取得が止まってしまっているということが分かりました。
event log show で ONTAP ネイティブのログ(EMS ログ)を確認します。
event log show -severity <=DEBUG で確認した EMS ログ一覧(クリックで展開)
FsxId007d9e5b2e0fb32a8::> event log show -severity <=DEBUG Time Node Severity Event ------------------- ---------------- ------------- --------------------------- 3/20/2024 17:55:39 FsxId007d9e5b2e0fb32a8-01 ERROR monitor.volume.nearlyFull: Volume emiki_fsxn_vol1@vserver:4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb is nearly full (using or reserving 95% of space and 0% of inodes). 3/20/2024 12:24:51 FsxId007d9e5b2e0fb32a8-02 NOTICE iscsi.notice: ISCSI: New session from initiator iqn.1991-05.com.microsoft:ec2amaz-qhefppr at IP addr 10.0.10.135 3/20/2024 12:24:50 FsxId007d9e5b2e0fb32a8-01 NOTICE iscsi.notice: ISCSI: New session from initiator iqn.1991-05.com.microsoft:ec2amaz-qhefppr at IP addr 10.0.10.135 3/20/2024 12:21:20 FsxId007d9e5b2e0fb32a8-01 NOTICE LUN.space.resv.not.honored: Space reservations in volume emiki_fsxn_vol1 (DSID 1026) are not honored, either because the volume space guarantee is set to 'none' or it is disabled due to lack of space in its containing aggregate. 3/20/2024 12:21:20 FsxId007d9e5b2e0fb32a8-01 NOTICE LUN.nvfail.option.on: The nvfail option for the volume emiki_fsxn_vol1 (DSID 1026) has been turned on. The volume contains LUN or NVMe namespaces and it is recommended that this option be kept on for such volumes. 3/20/2024 12:18:34 FsxId007d9e5b2e0fb32a8-01 NOTICE passwd.changed: passwd for user 'fsxadmin' changed. 3/20/2024 12:14:52 FsxId007d9e5b2e0fb32a8-01 NOTICE Nblade.graceEnd: NFS server grace state has ended for Vserver "emiki-fsxn-svm", LIF ID "1028", LIF IP address "10.0.20.149". 3/20/2024 12:14:50 FsxId007d9e5b2e0fb32a8-01 NOTICE arw.volume.state: Anti-ransomware state was changed to "disabled" on volume "emiki_fsxn_vol1" (UUID: "72e41a9c-e6b3-11ee-9ce5-bf560ed4c9fb") in Vserver "emiki-fsxn-svm" (UUID: "4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb"). 3/20/2024 12:14:05 FsxId007d9e5b2e0fb32a8-01 INFORMATIONAL Nblade.nfsCredCacheFlushed: When the administrator modifies the "extended-groups-limit" option or "auth-sys-extended-groups" option using the "vserver nfs modify" command, the entire credential cache is flushed that holds credentials on connections that use mixed-mode security style volumes or RPCSEC_GSS authentication or extended groups over AUTH_SYS. This makes subsequent operations on such connections slower for a short while, until the credential cache is repopulated. The value of "auth-sys-extended-groups" option is 0 (1:enabled, 0:disabled). The value of "extended-groups-limit" option is 32. 3/20/2024 12:14:05 FsxId007d9e5b2e0fb32a8-02 INFORMATIONAL Nblade.nfsCredCacheFlushed: When the administrator modifies the "extended-groups-limit" option or "auth-sys-extended-groups" option using the "vserver nfs modify" command, the entire credential cache is flushed that holds credentials on connections that use mixed-mode security style volumes or RPCSEC_GSS authentication or extended groups over AUTH_SYS. This makes subsequent operations on such connections slower for a short while, until the credential cache is repopulated. The value of "auth-sys-extended-groups" option is 0 (1:enabled, 0:disabled). The value of "extended-groups-limit" option is 32. 3/20/2024 12:13:59 FsxId007d9e5b2e0fb32a8-01 NOTICE Nblade.graceBegin: NFS server grace state has begun for Vserver "emiki-fsxn-svm", LIF ID "1028", LIP IP address "10.0.20.149". 3/20/2024 12:13:58 FsxId007d9e5b2e0fb32a8-01 NOTICE Nblade.recoveryBegin: NFS server lock recovery has begun for Vserver "emiki-fsxn-svm", LIFID "1028", LIF IP address "10.0.20.149". 3/20/2024 12:13:51 FsxId007d9e5b2e0fb32a8-02 NOTICE arw.vserver.state: Anti-ransomware was changed to "disabled" on Vserver "emiki-fsxn-svm" (UUID: "4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb"). 3/20/2024 12:11:55 FsxId007d9e5b2e0fb32a8-01 NOTICE snaplock.sys.compclock.set: The compliance clock time of the system has been set to Wed Mar 20 12:11:55 UTC 2024. Reason: initialized by administrator. 3/20/2024 12:11:55 FsxId007d9e5b2e0fb32a8-02 NOTICE snaplock.sys.compclock.set: The compliance clock time of the system has been set to Wed Mar 20 12:11:55 UTC 2024. Reason: initialized by administrator. 3/20/2024 12:11:53 FsxId007d9e5b2e0fb32a8-01 NOTICE passwd.changed: passwd for user 'fsx-oncall' changed. 3/20/2024 12:09:16 FsxId007d9e5b2e0fb32a8-01 NOTICE passwd.changed: passwd for user 'fsxadmin' changed. 3/20/2024 12:05:28 FsxId007d9e5b2e0fb32a8-02 NOTICE scsiblade.online: This node has completed initialization of the SAN configuration cache. FCP and iSCSI traffic are enabled on this node. 3/20/2024 12:04:59 FsxId007d9e5b2e0fb32a8-02 INFORMATIONAL secd.rpc.server.ready: SecD is ready to serve all RPCs. 3/20/2024 12:04:38 FsxId007d9e5b2e0fb32a8-01 NOTICE scsiblade.online: This node has completed initialization of the SAN configuration cache. FCP and iSCSI traffic are enabled on this node. 3/20/2024 12:04:23 FsxId007d9e5b2e0fb32a8-01 INFORMATIONAL secd.rpc.server.ready: SecD is ready to serve all RPCs. 3/20/2024 12:03:55 FsxId007d9e5b2e0fb32a8-01 NOTICE passwd.changed: passwd for user 'admin' changed. 3/20/2024 12:03:54 FsxId007d9e5b2e0fb32a8-02 NOTICE passwd.changed: passwd for user 'admin' changed. 3/20/2024 12:01:03 FsxId007d9e5b2e0fb32a8-02 NOTICE iscsi.session.stateChanged: iSCSI session state is changed to Connected for the target iqn.2012-06.com.bsdctl:target0 (type: partner2, address: 198.19.1.150:65200). 3/20/2024 12:01:03 FsxId007d9e5b2e0fb32a8-02 NOTICE iscsi.session.stateChanged: iSCSI session state is changed to Connected for the target iqn.2012-06.com.bsdctl:target0 (type: partner, address: 198.19.1.150:65200). 3/20/2024 12:01:00 FsxId007d9e5b2e0fb32a8-02 NOTICE iscsi.session.stateChanged: iSCSI session state is changed to Connected for the target iqn.2012-05.local:mailbox.target.r1mOZ (type: mailbox, address: 198.19.0.158). 3/20/2024 12:00:59 FsxId007d9e5b2e0fb32a8-02 NOTICE iscsi.session.stateChanged: iSCSI session state is changed to Connected for the target iqn.2012-06.com.bsdctl:target0 (type: local, address: 127.0.0.1:65199). 27 entries were displayed. FsxId007d9e5b2e0fb32a8::>
2024/3/20 17:55:39 UTC(2024/3/21 02:55 JST)に、ボリュームがほぼ満タン(スペースの 95% と inode の 0% を使用または予約状態)であることを示すエラーイベントが出力されています。
このログを確認したのが日本時間 2024/03/21(木) 09:57 なので、約 7 時間前の AM 2:55 JST 頃にボリュームが 95% まで使用されていたことが分かります。
今回 ONTAP CLI で取得できる詳細なログを掲載していますが、FSxN ボリュームの詳細画面「モニタリング」タブで使用可能なボリューム容量の折れ線グラフを確認いただくと、徐々にボリュームの空き容量が減っていきゼロに近づいていくのがより分かりやすく確認できます。
イメージ図
今回の事象を図に表すと以下です。
- LUN として確保した領域(ユーザーデータ)の内部はデータが激しく変更されたが、ユーザーからはまだ空き容量があるように見える
- 大きなスナップショットがたくさん取得され、Snapshot Reserve として確保した領域をスナップショットがあふれ出た(spill)
- あふれ出たスナップショットがボリュームの空き容量を圧迫し、ボリュームがフル(満タン)になった
対策
一時対応
一時対応として、以下の対応を実施すればボリュームは復旧します。
- スナップショット取得と自動バックアップを止め、不要なスナップショットとバックアップを削除する
- ボリュームを再びオンラインにする
スナップショット取得と自動バックアップを止め、不要なスナップショットとバックアップを削除する
今回の検証では自動バックアップを取得していなかったので自動バックアップの削除対応については割愛させていただきます。スナップショット取得の停止とスナップショットの削除方法は以下ブログを参照ください。
スナップショットデータ 1%、使用可能なボリューム容量 18.66% に戻りました。
ボリュームを再びオンラインにする
[コンピューターの管理] - [ディスクの管理] より、オフラインになっていたディスクをオンラインに変更します。
ボリューム E として再び使用できる状態に戻ります。
Windows Server のシステムログは以下のような情報ログが表示されます。
レベル | ソース | イベント ID | 内容 |
---|---|---|---|
情報 | Mtfs (Microsoft-Windows-Ntfs) | 98 | ボリューム E: (\Device\HarddiskVolume7) 正常です。必要な操作はありません。 |
恒久対応
恒久対応としては以下の対応を検討してください。
- データ移行などデータ更新が多く発生するタイミングではスナップショットの取得と自動バックアップを止めておく
- 自動バックアップを止める理由は、バックアップ時に差分を見るためのスナップショットが取得されているためです。データ更新が多く発生するとバックアップ時に取得されるスナップショットが巨大になる可能性があります。
- 詳細は スナップショットの自動削除設定によりバックアップのためのスナップショット取得が失敗すると、それに伴いバックアップも失敗する を参照
- データ更新が多いワークロードでは自動バックアップとスナップショットの取得頻度や保持期間を見直す
- ボリュームのサイジングを見直す
- ボリューム容量を増やす、Snapshot Reserve を多く設定する、SSD ストレージ容量を増やすなどの対策をとってください。
- スナップショットの自動削除設定をおこなう
- 以下ブログを参照ください。
- スナップショットデータを CloudWatch メトリクス監視しアラートを発報させる
- 今回のように iSCSI マウントのために LUN を切っている環境では自動でユーザーデータが増えることはありません(ユーザーが明示的に LUN をリサイズする必要がある)。
- そのためユーザーが明示的に増やさなくても容量に応じて増加してくるスナップショットデータを CloudWatch メトリクス監視しアラートを発報させると良いです。
- ボリュームの空き容量(使用可能なボリューム容量)を監視しても良いですが、CloudWatch アラームはアラームメトリクスあたりで課金が発生します。大量のボリュームが存在するような環境では複数のメトリクスを組み合わせるより、直接その値を示しているメトリクスを使う方がコストメリットがあります。
- ボリュームの自動拡張設定をおこなう
- ボリュームサイズの自動拡張設定も可能ですが、一回で自動拡張の閾値を超えてボリュームサイズがフルになるようなスナップショットの書き込みが行われる場合はエラーが発生する可能性があります。
おわりに
FSxN は ONTAP ならではの機能が多く、ストレージ運用で考慮すべき点が多くあります。運用時にこんなことを考えるかな、というのをイメージ図にしてみました。
最初から完璧な設定をするのは難しいので、運用しながら最適な設定値を見つけるようにすることがおすすめです。本記事がどなたかのお役に立てば幸いです。